﻿/*
 * Created by SharpDevelop.
 * User: Zoila
 * Date: 17/11/2011
 * Time: 02:31 a.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Drawing;
using System.Windows.Forms;
using Business_Entity;

namespace PetSoft.GUI.Ventas
{
	/// <summary>
	/// Description of GUIOpcionesPago.
	/// </summary>
	public partial class GUIOpcionesPago : Form
	{
		BEPedidoVenta pedido=new BEPedidoVenta();
		float tasaCambio= (float)(2.5);
		public GUIOpcionesPago()
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
		}
		public GUIOpcionesPago(BEPedidoVenta pedidoVenta)
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
			pedido=pedidoVenta;
			this.efectivoCHB.Checked=true;
			this.solCHB.Checked=true;
			this.efectivoTotalTB.Text=(Math.Round(pedido.MontoTotal,3)).ToString();
			this.tarjetaTotalTB.Text="0"; 
			this.tarjetaTotalTB.Enabled=this.tarjetaTotalDolarTB.Enabled=false;
			//this.tarjetaTotalDolarTB.Enabled=this.efectivoTotalDolarTB.Enabled=false;
			this.efectivoTotalDolarTB.KeyPress+=new KeyPressEventHandler(Utils.DecimalesPuntoTB);
			this.efectivoTotalTB.KeyPress+=new KeyPressEventHandler(Utils.DecimalesPuntoTB);
			this.tarjetaTotalDolarTB.KeyPress+=new KeyPressEventHandler(Utils.DecimalesPuntoTB);
			this.tarjetaTotalTB.KeyPress+=new KeyPressEventHandler(Utils.DecimalesPuntoTB);
			this.boletaCHB.Checked=true;
			Business_Logic.BLCaja bl = new Business_Logic.BLCaja();
			tasaCambio=bl.getTasa("USD");
			this.efectivoTotalDolarTB.ShortcutsEnabled=false;
			this.efectivoTotalTB.ShortcutsEnabled=false;
			this.tarjetaTotalTB.ShortcutsEnabled=false;
			this.tarjetaTotalTB.ShortcutsEnabled=false;
			this.razonTB.Enabled=false;
			this.rucTB.Enabled=false;
			this.razonTB.KeyPress+= new KeyPressEventHandler( Utils.NoCaracteresRarosTB);
			this.rucTB.KeyPress+=new KeyPressEventHandler(Utils.SoloNumerosTB);
		}
		
		
		void TarjetaCHBCheckedChanged(object sender, EventArgs e)
		{
			if (this.tarjetaCHB.Checked==true){
					this.efectivoTotalTB.Text=pedido.MontoTotal.ToString();
					this.tarjetaTotalTB.Text="0"; 
					this.tarjetaTotalTB.Enabled=this.tarjetaTotalDolarTB.Enabled=true;
			}
			else{
				if (this.efectivoCHB.Checked==false)
					this.tarjetaCHB.Checked=true;
				else {
					this.efectivoTotalTB.Text=pedido.MontoTotal.ToString();
					this.tarjetaTotalTB.Text="0"; 
					this.tarjetaTotalTB.Enabled=this.tarjetaTotalDolarTB.Enabled=false;
				}
			}
		}
		
		void EfectivoCHBCheckedChanged(object sender, EventArgs e)
		{
			if (efectivoCHB.Checked==true){
				monedaGB.Enabled=true;
				this.tarjetaTotalTB.Text=pedido.MontoTotal.ToString();
				this.efectivoTotalTB.Text="0"; 
				this.efectivoTotalDolarTB.Enabled=this.efectivoTotalTB.Enabled=true;
			}
			else {
				if (this.tarjetaCHB.Checked==false)
					this.efectivoCHB.Checked=true;
				else {
					monedaGB.Enabled=false;
					solCHB.Checked=true;
					this.efectivoTotalTB.Text="0";
					this.tarjetaTotalTB.Text=pedido.MontoTotal.ToString(); 
					this.efectivoTotalDolarTB.Enabled=this.efectivoTotalTB.Enabled=false;
				}
			}
		}
		
		void SolCHBCheckedChanged(object sender, EventArgs e)
		{
			dolarCHB.Checked=!solCHB.Checked;
		}
		
		void DolarCHBCheckedChanged(object sender, EventArgs e)
		{
			solCHB.Checked=!dolarCHB.Checked;
		}
		
		void EfectivoTotalTBTextChanged(object sender, EventArgs e)
		{
			if (efectivoTotalTB.Text!=""){
				this.efectivoTotalDolarTB.Text=(Math.Round((Single.Parse(this.efectivoTotalTB.Text)/tasaCambio),3)).ToString();
				this.tarjetaTotalTB.Text=(Math.Round(pedido.MontoTotal-(Single.Parse(this.efectivoTotalTB.Text)),3)).ToString();
			}
			else 
				this.efectivoTotalDolarTB.Text="0";
		}
		
		void TarjetaTotalTBTextChanged(object sender, EventArgs e)
		{
			if (tarjetaTotalTB.Text!=""){
				this.tarjetaTotalDolarTB.Text=(Math.Round((Single.Parse(this.tarjetaTotalTB.Text)/tasaCambio),3)).ToString();
				this.efectivoTotalTB.Text=(Math.Round((pedido.MontoTotal-(Single.Parse(this.tarjetaTotalTB.Text))),3)).ToString();
			}
			else 
				this.tarjetaTotalDolarTB.Text="0";
		}
		
		void EfectivoTotalDolarTBTextChanged(object sender, EventArgs e)
		{
			if (efectivoTotalDolarTB.Text!="")
				this.efectivoTotalTB.Text=(Math.Round((Single.Parse(this.efectivoTotalDolarTB.Text)*tasaCambio),3)).ToString();
			else 
				this.efectivoTotalTB.Text="0";
		}
		
		void TarjetaTotalDolarTBTextChanged(object sender, EventArgs e)
		{
			if (tarjetaTotalDolarTB.Text!="")
				this.tarjetaTotalTB.Text=(Math.Round((Single.Parse(this.tarjetaTotalDolarTB.Text)*tasaCambio),3)).ToString();
			else 
				this.tarjetaTotalDolarTB.Text="0";
		}
		
		void PagarBTNClick(object sender, EventArgs e)
		{
			float cambios=Single.Parse(this.efectivoTotalTB.Text)+Single.Parse(this.tarjetaTotalTB.Text);
			
			string moneda;float efectivo,tarjeta;
			char tipo;
			if (this.dolarCHB.Checked==true) {
				moneda="USD";
				efectivo=(float)Math.Round(Single.Parse(efectivoTotalDolarTB.Text),3);
			    tarjeta=(float)Math.Round(Single.Parse(tarjetaTotalDolarTB.Text),3);
			}
			else {
				moneda="S/.";
				efectivo=(float)Math.Round(Single.Parse(efectivoTotalTB.Text),3);
				tarjeta=(float)Math.Round(Single.Parse(tarjetaTotalTB.Text),3);
			}
			if (this.facturaCHB.Checked==true) {
				tipo='F';
				if (this.rucTB.Text.Equals("")|| this.razonTB.Text.Equals("")){
					Utils.MessageInformation ("Los campos RUC y Razon Social son obligatorios");
					return;
				}
				if(this.rucTB.Text.Length!=11){
					Utils.MessageInformation("Debe ingresar el RUC completo");
					return;
				}
			}
			else {
				tipo='B';
			}
			
			if (efectivo<0 || tarjeta<0 ) {
				Utils.MessageError("Los montos no son validos");
				return;
			}
			
			if (Math.Round((cambios-pedido.MontoTotal),3) <= 0.05){
				//MessageBox.Show("Se realizara el pago =D");
				string mensaje;
				mensaje= Business_Logic.BLVenta.pagaPedidoVenta(pedido,efectivo,tarjeta,moneda,tipo,this.rucTB.Text,this.razonTB.Text);
				if (!mensaje.Equals("")){
					if (Utils.MessagePregunta(mensaje +"\n \n Desea imprimir el documento de Pago?")){
						GUIPedidoVenta.imprimeDocVenta(pedido);
					}
				}
				this.Close();
			}
			else{
					
				if (cambios > pedido.MontoTotal)
					Utils.MessageError("Los montos a pagar son mayores al total");
				if (cambios < pedido.MontoTotal)
					Utils.MessageError("Los montos a pagar son menores al total");
			}
			
		}
		
		void BoletaCHBCheckedChanged(object sender, EventArgs e)
		{
			this.facturaCHB.Checked=!this.boletaCHB.Checked;
			this.razonTB.Clear();this.rucTB.Clear();
			this.razonTB.Enabled=false;
			this.rucTB.Enabled=false;
		}
		
		void FacturaCHBCheckedChanged(object sender, EventArgs e)
		{
			this.boletaCHB.Checked=!this.facturaCHB.Checked;
			this.rucTB.Enabled=true;
			this.razonTB.Enabled=true;
		}
	}
}
